<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>prc: Main Page</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">prc
   </div>
   <div id="projectbrief">Vitis Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li class="current"><a href="index.html"><span>Overview</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="globals.html"><span>APIs</span></a></li>
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="pages.html"><span>Examples</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('index.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">prc Documentation</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>Xilinx PRC driver component provides management function for self-controlling partially reconfigurable designs.It is intended for enclosed systems where all of the Reconfigurable Modules are known to the controller. The optional AXI4-Lite register interface allows the core to be reconfigured at run time, so it can also be used in systems where the Reconfigurable Modules(RM) can change in the field.</p>
<p>The PRC supports the following features:</p>
<ul>
<li>32 Virtual Sockets.</li>
<li>128 Reconfigurable modules per Virtual Socket.</li>
<li>Optional hardware and software shutdown of Reconfigurable Modules (configurable per Reconfigurable Module).</li>
<li>Optional software start-up of Reconfigurable Modules (configurable per Reconfigurable Module).</li>
<li>Optional reset of Reconfigurable Modules after loading (configurable per Reconfigurable Module).</li>
<li>Virtual Socket Managers can be shutdown and restarted by the user to allow external controllers to partially reconfigure the device.</li>
<li>User control of Virtual Socket Manager output signals is supported in the shutdown state.</li>
</ul>
<p>The Partial Reconfiguration Controller consists of one or more Virtual Socket Managers(VSMs) which connect to a single fetch path. Virtual Socket Managers operate in parallel waiting for triggers to occur. When a trigger occurs, the appropriate VSM maps the trigger to an RM and manages the reconfiguration of that RM. VSM's queue for access to the fetch path.</p>
<p>VSMs exist in two States</p>
<ul>
<li>Active State</li>
<li>Shutdown State</li>
</ul>
<p><b>Initialization &amp; Configuration</b></p>
<p>The XPrc_Config structure is used by the driver to configure itself. This configuration structure is created based on HW build properties.</p>
<p>To support multiple runtime loading and initialization strategies employed by various operating systems, the driver instance can be initialized in the following way:</p>
<ul>
<li>XPrc_LookupConfig(DeviceId) - Use the device identifier to find the static configuration structure defined in xprc_g.c. This is setup by the tools. For some operating systems the config structure will be initialized by the software and this call is not needed.</li>
<li>XPrc_CfgInitialize(InstancePtr, CfgPtr, EffectiveAddr) is used for initialization. The user needs to first call the <a class="el" href="group__prc.html#ga61ee29cca9dae9f18fb9a635f5c0a4b2" title="This function Looks for the device configuration based on the unique device ID. ">XPrc_LookupConfig()</a> API which returns the Configuration structure pointer which is passed as a parameter to the <a class="el" href="group__prc.html#ga860a4c5ba01881e1547b8150affa7c0d" title="This function initializes a PRC instance. ">XPrc_CfgInitialize()</a> API.</li>
</ul>
<p><b> Threads </b></p>
<p>This driver is not thread safe. Any needs for threads or thread mutual exclusion must be satisfied by the layer above this driver.</p>
<p><b> Asserts </b></p>
<p>Asserts are used within all Xilinx drivers to enforce constraints on argument values. Asserts can be turned off on a system-wide basis by defining, at compile time, the NDEBUG identifier. By default, asserts are turned on and it is recommended that users leave asserts on during development.</p>
<p><b> Building the driver </b></p>
<p>The <a class="el" href="struct_x_prc.html" title="The XPrc instance data structure. ">XPrc</a> driver is composed of several source files. This allows the user to build and link only those parts of the driver that are necessary.</p>
<p><b> Debug prints </b></p>
<p><a class="el" href="struct_x_prc.html" title="The XPrc instance data structure. ">XPrc</a> driver is having debug prints.</p>
<ul>
<li>To get the debug print statements of the driver, please define XPRC_DEBUG as shown below. "#define XPRC_DEBUG"</li>
<li>To get the debug print statements of the core, please define XPRC_DEBUG_CORE as shown below. "#define XPRC_DEBUG_CORE"</li>
</ul>
<pre></pre><pre>MODIFICATION HISTORY:</pre><pre>Ver   Who      Date        Changes
</p>
<hr/>
<p>
1.0   ms     07/18/16     First release
      ms     03/17/17     Added readme.txt file in examples folder for
                          doxygen generation.
      ms     04/05/17     Modified comment lines notation in functions
                          of prc examples to avoid unnecessary description
                          which was displayed while generating doxygen.
1.1   ms     04/18/17     Modified tcl file to add suffix U for all macros
                          definitions of prc in xparameters.h
      ms     08/01/17     Added a new parameter "Cp_Compression" to
                          XPrc_Config structure and also inline function
                          related to this paramter.
                          Modified <a class="el" href="xprc_8c.html">xprc.c</a>, prc.tcl, <a class="el" href="xprc__hw_8h.html">xprc_hw.h</a> to add a
                          new parameter "Cp_Compression" and status error
                          flags. Added the Updated api.tcl to data folder.
1.2  Nava   29/03/19      Updated the tcl logic to generated the
                          XPrc_ConfigTable properly.
2.2  Nava   07/04/23      Added support for system device-tree flow.
</pre> </div></div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
	<p class="footer">&copy; Copyright 2015-2022 Xilinx, Inc. All Rights Reserved.</p>
	<p class="footer">&copy; Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.</p>
</div>
</body>
</html>
